const KoaRouter = require("@koa/router");
const { verifyAuth } = require("../middleware/login.middleware");
const { create, list, detail, update, remove, addLabels } = require("../controller/moment.controller");
const { verifyPermission} = require('../middleware/permission.middleware');
const { verifyLabelExists } = require("../middleware/label.middleware");

const momentRouter = new KoaRouter({ prefix: "/moment" });

//  编写接口
// 1.发表动态(增)
momentRouter.post("/", verifyAuth, create);
// 2.1.动态列表(查)
momentRouter.get("/", list);
// 2.2.动态详情(查)
momentRouter.get("/:momentId", detail);
// 3.删除动态(删)
momentRouter.delete("/:momentId", verifyAuth, verifyPermission, remove);
// 4.修改动态(改) 需要验证身份 需要权限认证
momentRouter.patch("/:momentId", verifyAuth, verifyPermission, update);
// 5.给动态添加标签
/**
 * 中间件：
 *  1.是否登录
 *  2.验证是否有操作这个动态的权限
 *  3.额外中间件：验证label的name是否已经存在于label表中
 *    如果存在，那么直接使用即可
 *    如果没有存在，那么需要先将label的name添加label表
 *  4.最终步骤
 *    所有的labels都已经在label表
 *    动态1，和labels关系，添加到关系表中
 */
momentRouter.post("/:momentId/labels", verifyAuth, verifyPermission, verifyLabelExists, addLabels);

module.exports = momentRouter;
